/*
 * PushUtils.java
 * business
 *
 * Created by ChenTao on 2016/9/9.
 *
 * Copyright (c) 2016年 yidiandao. All rights reserved.
 */

package com.yidiandao.business.utils;

import android.content.Context;

import com.yidiandao.business.constant.Flavor;

import java.util.HashSet;
import java.util.Set;

import cn.jpush.android.api.JPushInterface;
import cn.jpush.android.api.TagAliasCallback;

/** 极光推送工具 */
public class PushUtils {

    /**
     * 为每个用户设置单独的别名
     *
     * @param alias 别名
     */
    public static void setAlias(final Context context, String alias) {
        JPushInterface.setAlias(
                context,
                alias,
                new TagAliasCallback() {
                    @Override
                    public void gotResult(int code, final String alias, Set<String> set) {
                        switch (code) {
                            case 0:
                                // 别名设置成功
                                LogUtils.d("JPush set alias success !!!");
                                break;
                            case 6002:
                                // 设置失败,60秒后重试
                                LogUtils.d("JPush set alias due to timeout,Try again after 60s");
                                UIUtils.postDelayed(
                                        new Runnable() {
                                            @Override
                                            public void run() {
                                                setAlias(context, alias);
                                            }
                                        },
                                        1000 * 60);
                                break;
                            default:
                                LogUtils.e("Failed to set alias , errorCode : " + code);
                                break;
                        }
                    }
                });
    }

    /** 取消之前的绑定 */
    public static void clearAlias(Context context) {
        JPushInterface.setAlias(context, "", null);
    }

    /** 设置tag方便群推 */
    private static void setTag() {
        String tag = null;
        switch (FlavorUtils.getCurrentFlavor()) {
            // 发开环境
            case Flavor.DEV:
                tag = "dev";
                break;
            // 测试环境
            case Flavor.TEST:
                tag = "test";
                break;
            // 生产环境
            case Flavor.ALPHA:
                tag = "release";
                break;
        }
        Set<String> tags = new HashSet<>();
        tags.add(tag);
        JPushInterface.setTags(UIUtils.getContext(), tags, null);
    }

    /** 上报用户的通知栏被打开 */
    public static void reportNotificationOpened(Context context, String msgId) {
        JPushInterface.reportNotificationOpened(context, msgId);
    }

    /** 停止推送服务 */
    public static void stopPush(Context context) {
        if (!JPushInterface.isPushStopped(context)) {
            JPushInterface.stopPush(context);
        }
    }

    /** 恢复推送服务 */
    public static void resumePush(Context context) {
        if (JPushInterface.isPushStopped(context)) {
            JPushInterface.resumePush(context);
        }
    }

    public static void init(Context context) {
        JPushInterface.setDebugMode(false); // 设置开启日志,发布时请关闭日志
        JPushInterface.init(context); // 初始化 JPush

        setTag();
    }

    public static void onResume(Context context) {
        if (!FlavorUtils.isAlpha()) {
            return;
        }
        JPushInterface.onResume(context);
    }

    public static void onPause(Context context) {
        if (!FlavorUtils.isAlpha()) {
            return;
        }
        JPushInterface.onPause(context);
    }
}
